<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <div>
        <!--
        v-model的本质：
            动态绑定value属性，然后监听文本输入框的input事件将最新的文本框value值赋值给动态绑定的属性值
            v-bind绑定value属性的值，v-on绑定input事件监听到函数中，函数会获取最新的值赋值到绑定的属性中
        -->
        <input type="text" :value="message" @input="onInput"> <span>{{message}}</span>
    </div>
    <div>
        <!--v-model语法糖-->
        <input type="text" v-model="userName"> <span>{{userName}}</span>
    </div>
</div>
<script src="../../JavaScript/vue.js"></script>
<script>
    /*
    v-model指令可以在表单元素上创建双向数据绑定，它会根据控件的类型自动选取正确的方法来更新元素
    v-model的本质是语法糖，它监听用户的输入事件来更新数据
    v-mode的本质上:value=xxx,以及@input的语法糖

    v-model：在表单输入元素或组件上创建双向绑定。
    期望的绑定值类型：根据表单输入元素或组件输出的值而变化
    仅限：<input>、<select>、<textarea>、components
    修饰符：
        .lazy - 监听 change 事件而不是 input
        .number - 将输入的合法字符串转为数字
        .trim - 移除输入内容两端空格
    */
    const app = Vue.createApp({
        data() {
            return {
                message: "",
                userName: "",
            }
        },
        methods: {
            onInput(event) {
                this.message = event.target.value
            }
        }
    })
    app.mount("#app")
</script>
</body>
</html>